/*三种常用的组合逻辑的赋值方式
    2023.2.20 周一 iron2222
*/


module mux2_1
(
    input wire [0:0] in_1,
    input wire [0:0] in_2,
    input wire [0:0] sel,

    output reg [0:0] out
);

//第一种：使用always对组合逻辑进行赋值
always@(*)//*代表：三个输入信号有一个出现变化就回执行下面的语句
    if (sel == 1'b1) 
        out = in_1; 
    else
        out = in_2;

//第二种：使用case
always@(*)
    case (sel)
        1'b1: out = in_1;
        1'b0: out = in_2;   
        default: out = in_1;//如果case没有列举完，一定要加一个default，像例子这种情况就可以忽略
    endcase

//第三种：使用assign语句
assign out = (sel == 1'b1) ? in_1 : in_2;

endmodule